//给定两个以字符串形式表示的非负整数 num1 和 num2，返回 num1 和 num2 的乘积，它们的乘积也表示为字符串形式。 
//
// 示例 1: 
//
// 输入: num1 = "2", num2 = "3"
//输出: "6" 
//
// 示例 2: 
//
// 输入: num1 = "123", num2 = "456"
//输出: "56088" 
//
// 说明： 
//
// 
// num1 和 num2 的长度小于110。 
// num1 和 num2 只包含数字 0-9。 
// num1 和 num2 均不以零开头，除非是数字 0 本身。 
// 不能使用任何标准库的大数类型（比如 BigInteger）或直接将输入转换为整数来处理。 
// 
// Related Topics 数学 字符串 
// 👍 596 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String multiply(String num1, String num2) {
      int n = num1.length();
      int m=num2.length();
      int [] answare=new int[n+m];
      for (int i=n-1;i >= 0; i--) {
          int number1=num1.charAt(i)-'0';
          for (int j=m-1; j >= 0; j--) {
              int number2 = num2.charAt(j)-'0';
              int result=number1*number2+answare[i+j+1];//考虑进位 相加进位在考虑取模运算
              answare[i+j+1] = result%10;
              answare[i+j]+=result/10;//如果后一位数大于0，则需要在前一个数进位

          }
      }
      StringBuilder sb=new StringBuilder();
      for (int i = 0; i < n+m;i++) {
          if (answare[i]==0&&sb.length()==0) {//只有字符串里没有字母 遇上0时 才不往上加
              continue;

          }
          sb.append(answare[i]);
      }
   return sb.length()==0?"0":sb.toString();

    }
}
//leetcode submit region end(Prohibit modification and deletion)
